type Lambda[In,Out] native
type Pair[A,B] open record { first A, second B }
type Triple[A,B,C] open record { first A, second B, third C }

public function
    Pair[A,B] { first A, second B } Pair[A,B]
    { new Pair(first, second) }

public function
    Triple[A,B,C] { first A, second B, third C } Triple[A,B,C]
    { new Triple(first, second, third) }


